<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8" />
		<title>数组的reduce方法</title>
	</head>
	<body>
		<script type="text/javascript" >
			//#region 
			/* 
				数组的reduce方法（很常用）：
						语法：
							arr.reduce((preValue, current, index, arr) => {} ,initialValue)
							preValue:
									第一次执行回调时为给定的初始值initialValue，以后是上一次执行回调时的返回值。
									备注：若没有传入initialValue，则第一次的preValue值是数组中第一个元素的值。
							current 表示当前正在处理的元素；
							initialValue 表示初始值。一般做数学运算时设置为0，若为筛选最值可以不传。
							arr：当前操作的数组
							index 表示当前正在处理的数组元素的索引，若传入了initialValue值，则为0，否则为1；
			*/
			//#endregion

			let arr = [9,1,20,3,4,5,6,7,8,9,10]
			let persons = [
				{id:'001',name:'老刘1',age:18},
				{id:'001',name:'老刘2',age:14},
				{id:'001',name:'老刘3',age:15},
				{id:'001',name:'老刘4',age:22},
			]

			const x = persons.reduce((pre,curr)=>{
				return pre + (curr.age > 15 ? 1 : 0)
			},0)
			console.log(x)

			//做累加器使用----求出数组所有元素的和
			/* const x = arr.reduce((preValue,current)=>{
				// console.log(preValue,current)
				return preValue + current
			}) */

			//条件统计 ---- 求出数组中偶数有几个
			/* const x = arr.reduce((preValue,current)=>{
				return preValue + (current % 2 === 0 ? 1 : 0 )
			},0) */

			//条件求和 ---- 求出数组中所有偶数的和
			/* const x = arr.reduce((preValue,current)=>{
				return preValue + (current % 2 === 0 ? current : 0 )
			},0) */

			//筛选最值
			/* const x = arr.reduce((preValue,current)=>{
				return Math.max(preValue,current)
			}) */

		</script>
	</body>
</html>